package com.bsoft.gol.hcs.his.service;


import com.bsoft.gol.hcs.clinical.bean.qo.DoctorListQo;
import com.bsoft.gol.hcs.clinical.bean.req.OutpatientDocRequest;
import com.bsoft.gol.hcs.clinical.bean.response.DiagnosticInformationResponse;
import com.bsoft.gol.hcs.clinical.bean.response.PrescriptionInformationResponse;
import com.bsoft.gol.hcs.common.bean.request.GetMedicalRecordsReq;
import ctd.controller.exception.ControllerException;
import com.bsoft.gol.hcs.his.bean.request.OutpatientListQueryRequest;
import com.bsoft.gol.hcs.his.bean.request.QueryOutpatientListRequest;
import com.bsoft.gol.hcs.his.bean.response.*;
import org.atag.dao.model.SimplePageInfo;

import java.util.List;
import java.util.Map;

/**
 * 门诊患者对接his接口
 *
 * @author sumu
 */
public interface OutpatientDocService {

    /**
     * 获取门诊患者列表
     *
     * @param request request
     * @return result
     */
    OutpatientInfoResponse listPatient(OutpatientListQueryRequest request) throws ControllerException;


    /**
     * 查询门诊病例信息
     *
     * @param request request
     * @return result
     */
   List<MedicalRecordTemplateResponse> getMedicalRecordInformation(OutpatientDocRequest request) throws ControllerException;

    /**
     * 查询诊断信息
     *
     * @param request request
     * @return result
     */
   List<DiagnosticInformationResponse> getDiagnoseInformation(OutpatientDocRequest request) throws ControllerException;

    /**
     * 查询处方信息
     *
     * @param request request
     * @return result
     */
    List<PrescriptionInformationResponse> getPrescriptionInformation(OutpatientDocRequest request) throws ControllerException;

    /**
     * 查询医嘱
     *
     * @param recordsReq request
     * @return result
     */
    /*同步就医记录*/
   List<GetMedicalRecordsResp> getMedicalRecords(GetMedicalRecordsReq recordsReq) throws ControllerException;

    /**
     * 获取门诊患者列表(7/28列表改造-最新)
     *
     * @param request
     * @return
     */
    QueryOutpatientListResponse queryOutpatientList(QueryOutpatientListRequest request) throws ControllerException;

    /**
     * 查询数据库门诊患者列表
     *
     * @param request 列表查询入参
     * @return 门诊分页列表
     */
    SimplePageInfo<PatientInfo> queryLocalOutpatientList(QueryOutpatientListRequest request);

    /**
     * 管理端-门诊患者接诊医生列表
     *
     * @param request 查询医生信息
     * @return baseResponse
     */
    List<Map<String, String>> outPatientDoctorList(DoctorListQo request);
}
